/*
 * @(#)AbstractClassifiableModel.java
 * Date 2013-09-05
 * Version 1.0
 * Author Jim Horner
 * Copyright (c)2012
 */


package us.hornerscorners.lamppost.model.common;

import java.util.ArrayList;
import java.util.List;
import us.hornerscorners.lamppost.utils.UUIDUtils;


/**
 * Class description
 *
 *
 * @version        v1.0, 2013-09-05
 * @author         Jim Horner
 */
public abstract class AbstractClassifiableModel implements IClassifiableModel {

    /** Field description */
    private final List<LocalizedString> descriptions;

    /** Field description */
    private final List<LocalizedString> displayNames;

    /** Field description */
    private String entryLogicalURN;

    /** Field description */
    private String entryURN;

    /** Field description */
    private String entryVersion;

    /**
     * Constructs ...
     *
     */
    public AbstractClassifiableModel() {

        super();

        this.entryURN = UUIDUtils.generateURN();
        this.descriptions = new ArrayList<>();
        this.displayNames = new ArrayList<>();
    }

    /**
     * Method description
     *
     *
     * @return
     */
    @Override
    public List<LocalizedString> getDescriptions() {
        return descriptions;
    }

    /**
     * Method description
     *
     *
     * @return
     */
    @Override
    public List<LocalizedString> getDisplayNames() {
        return displayNames;
    }

    /**
     * Method description
     *
     *
     * @return
     */
    @Override
    public String getEntryLogicalURN() {
        return entryLogicalURN;
    }

    /**
     * Method description
     *
     *
     * @return
     */
    @Override
    public String getEntryURN() {
        return entryURN;
    }

    /**
     * Method description
     *
     *
     * @return
     */
    @Override
    public String getEntryVersion() {
        return entryVersion;
    }

    /**
     * Method description
     *
     *
     * @param entryLogicalURN
     */
    public void setEntryLogicalURN(String entryLogicalURN) {
        this.entryLogicalURN = entryLogicalURN;
    }

    /**
     * Method description
     *
     *
     * @param entryURN
     */
    public void setEntryURN(String entryURN) {
        this.entryURN = entryURN;
    }

    /**
     * Method description
     *
     *
     * @param entryVersion
     */
    public void setEntryVersion(String entryVersion) {
        this.entryVersion = entryVersion;
    }
}
